小喵這次想在ASP.NET中達到類似Excel凍結視窗的效果。但是中間遇到了幾個狀況,要一一排除掉,小喵將排除的方式記錄如下:
1.首先這樣的方式並非標準的CSS語法,然而開WebForm的時候,aspx裡面都會加入一行來檢查是否是標準的格式,有這行會失敗,必須將此行刪除
2.其次,由於GridView所產生的HTML裡面,自動會加入一個DIV,這會導致CSS中的this.parentElement.offsetParent.parentElement.scrollLeft
取錯,要修正為
this.parentElement.offsetParent.offsetParent.scrollLeft
以下為範例:
首先在樣式表中加入CSS設定
.FixedTitleRow
{
position: relative;
table-layout:fixed;
top: expression(this.offsetParent.scrollTop-2);
background-color:White;
z-index: 10;
}
.FixedTitleRow th
{
text-overflow:ellipsis;
overflow:hidden;
white-space: nowrap;
padding:2px;
}
.FixedTitleColumn
{
position: relative;
left: expression(this.parentElement.offsetParent.scrollLeft-2);
}
.FixedDataColumn
{
position: relative;
left: expression(this.parentElement.offsetParent.offsetParent.scrollLeft-2);
}
接著新增aspx檔案,記得去除
使用方式很簡單
固定左邊的資料行中,設定HeadStyle的CssClass=FixedTitleColumn,以及ItemStyle的CssClass=FixedDataColumn
整個GridView的HeadStyle設定CssClass=FixedTitleRow
這樣就完成了!!
設定過程錄影說明